﻿-- | Matematikai logika könyvtár
module Lib.Logic ((→), (←), (↔), (∃), (∀)) where

-- = Matematikai Logika és jelek megvalósítása = --

--operátorok

infixl 4 →
infixr 4 ←
infix  2 ↔

-- | Egzisztenciális kvantor
(∃) :: (a -> Bool) -> [a] -> Bool
(∃) = any

-- | Univerzális kvantor
(∀) :: (a -> Bool) -> [a] -> Bool
(∀) = all

-- | Implikáció
(→) :: Bool -> Bool -> Bool
(→) = haAkkor

-- | Fordított implikáció
(←) :: Bool -> Bool -> Bool
(←) = flip (→)

-- | Kétirányú implikáció
(↔) :: Bool -> Bool -> Bool
(↔) = akkorEsCsakAkkor

--főbb defek

haAkkor a b = not a || (a && b)
akkorEsCsakAkkor a b = (a → b) && (a ← b)